package com.br.venda;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;

import com.br.produto.Produto;


public class VendaDAOHibernate implements VendaDAO{

	private Session sessao;

    public Session getSessao() {
            return sessao;
    }

    public void setSessao(Session sessao) {
            this.sessao = sessao;
    }

	
	@Override
	public void registra(venda venda) {
		this.sessao.save(venda);
		
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<venda> getLista() {
		 Criteria lista = sessao.createCriteria(venda.class);
        return lista.list();

	}

	@Override
	public void excluir(venda venda) {
		 this.sessao.delete(venda);
		
	}

	@Override
	public boolean existeEstoqueProduto(Produto produto) {
		Produto produtoPesquisado = (Produto) this.sessao.get(Produto.class,
                produto.getId());

if (produtoPesquisado != null) {
        if (produtoPesquisado.getEstoque() > 0) {
                return true;
        }
}

return false;
	}

	@Override
	public void reduzEstoqueProduto(Produto produto) {
		 String hql = "update Produto p set p.estoque =:novoEstoque where p.id =:idProduto";
         Query query = sessao.createQuery(hql);
         query.setInteger("novoEstoque", produto.getEstoque() - 1);
         query.setLong("idProduto", produto.getId());
         query.executeUpdate();

		
	}

	
	
}
